package com.cg.dao;


import com.cg.dto.UpdateUserDto;
import com.cg.entity.User;
import com.cg.vo.LoginUserVo;
import com.cg.vo.UserDepRoleVo;
import com.cg.vo.UserDetailVo;
import com.cg.vo.UserShowInfoVo;

import java.util.List;

/**
 * (User)表数据库访问层
 *
 * @author chengong
 * @since 2023-12-01 11:49:44
 */
public interface UserMapper {

    /**
     * 添加新用户
     * @param user:前端传过来要添加的用户信息
     * @return：返回添加成功的行数
     */
    Integer createUser(User user);


    /**
     * 用户登录
     * @param user：前端传递过来的用户登录名和密码
     * @return：返回的数据
     */
    LoginUserVo login(User user);


    /**
     * 根据用户id获取用户信息
     * @param userId
     * @return
     */
    LoginUserVo queryUserByUserId(Integer userId);


    /**
     * 员工管理页面分页并按照名称模糊查询
     */
    List<UserDepRoleVo> queryUserByUserName(String userName);


    /**
     * 用户详情展示
     */
    UserDetailVo getUserByUserId(Integer userId);


    /**
     * 启用/禁用
     */
    Integer updateUserState(User user);

    /**
     * 根据id查询用户
     */
    User selectById(Integer id);


    /**
     * 修改员工信息
     * @param user
     * @return
     */
    Integer updateUserByUserId(User user);


    /**
     * 删除员工
     */
    Integer deleteUserByUserId(Integer userId);

    /**
     * 通过部门id获取用户信息列表
     * @return
     */
    List<User> queryUserListByDepId(List<Integer> departmentIdList);


    /**
     * 根据用户id查询个人的详细信息
     */
    UserShowInfoVo queryUserInfo(Integer userId);

    /**
     * 验证登录名是否可用
     */
    Integer checkLoginUser(String loginUser);


    /**
     * 修改密码
     */
    Integer setPassword(UpdateUserDto updateUserDto);

    /**
     * 修改用户登录名
     */
    Integer setLoginUser(User user);
}

